#pragma once

#include "type.h"
#include "axisalignedbox.h"

namespace RenderSystem
{
	class SceneNode;
	class Movable
	{
	public:
		Movable(void);
		virtual ~Movable(void);

		virtual String GetId(void) const = 0;
		virtual void AttachTo( SceneNode* pAttachNode );
		SceneNode* GetAttachNode( void ) const;
		
		void SetVisible( bool bVisible );
		bool GetVisible( void ) const;

		void UpdateAABB( void );
		const Common::AxisAlignedBox& GetBoundingBox( bool bWorldSpace );

	protected:

		SceneNode* m_pAttachedSceneNode;
		bool m_bVisible;
		Common::AxisAlignedBox	m_AABB;
	};
}